package org.linlinjava.litemall.wx.service;

import org.linlinjava.litemall.db.domain.UserAccountBinding;
import java.util.List;

public interface WxUserAccountBindingService {
    
    /**
     * 创建绑定关系（直接绑定）
     */
    UserAccountBinding createBinding(Integer litemallUserId, String amspUserCode, Integer amspUserId);
    
    /**
     * 解绑账户
     */
    boolean unbindAccount(Integer litemallUserId, String amspUserCode);
    
    /**
     * 查询用户的绑定列表
     */
    List<UserAccountBinding> getUserBindings(Integer litemallUserId);
    
    /**
     * 查询用户的主要绑定账户
     */
    UserAccountBinding getPrimaryBinding(Integer litemallUserId);
    
    /**
     * 检查是否已绑定
     */
    boolean isBound(Integer litemallUserId, String amspUserCode);
    
    /**
     * 检查绑定关系是否存在
     */
    boolean isBindingExists(Integer litemallUserId, String amspUserCode);
    
    /**
     * 根据AMSP用户代码查询绑定关系
     */
    UserAccountBinding getBindingByAmspUserCode(String amspUserCode);
    
    /**
     * 检查AMSP账号是否已被绑定
     */
    boolean isAmspAccountBound(String amspUserCode);
    
    /**
     * 检查AMSP账号是否可以被指定用户绑定
     */
    boolean canAmspAccountBindToUser(String amspUserCode, Integer litemallUserId);
    
    /**
     * 获取AMSP账号当前绑定的用户ID
     */
    Integer getAmspAccountBoundUserId(String amspUserCode);
} 